import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.PageLoadStrategy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.time.Duration;

public class autoTest03 {
    //程序运行的代码
    public WebDriver openExplorer(){
        //驱动管理程序下载驱动
        WebDriverManager.chromedriver().setup();
        ChromeOptions options = new ChromeOptions();
        //无头模式(浏览器在后台执行相关的操作，我们将其称之为无头模式，默认都是有头
        //options.addArguments("-headless");
        //允许访问所有链接
        options.addArguments("--remote-allow-origins=*");
        //浏览器的加载策略
        //完全不阻塞
        //options.setPageLoadStrategy(PageLoadStrategy.NONE);
        //DOM访问已准备就绪，但其他资源还在加载
        //options.setPageLoadStrategy(PageLoadStrategy.EAGER);
        //默认值，等待所有资源下载完成
        //options.setPageLoadStrategy(PageLoadStrategy.NORMAL);
        //1.驱动打开浏览器(添加的配置要给创建的驱动对象）
        WebDriver driver = new ChromeDriver(options);
        //2.请求百度网址：https://www.baidu.com/
        driver.get("https://www.baidu.com/");
        return driver;
    }

    //结束程序的代码
    public void quitExplorer(WebDriver driver){
        driver.quit();
    }

    public void Test01(){
        WebDriver driver=openExplorer();
        //3.找到百度输入框，并在输入框输入明日方舟
        driver.findElement(By.xpath("//*[@id=\"kw\"]")).sendKeys("明日方舟");
        //4.点击百度一下按钮，并点击
        driver.findElement(By.xpath("//*[@id=\"su\"]")).click();
        //显示等待
       WebDriverWait wait= new WebDriverWait(driver, Duration.ofSeconds(3));
       //presenceOfElementLocated(Bylocator):检查页面DOM上是否存在元素
       //wait.until(ExpectedConditions.presenceOfElementLocated(
       //        By.xpath("//*[@id=\"m6010318884_canvas\"]/div/div[1]/div[1]/div/h2/a[1]/span")));

        //elementToBeClickable(By locator)：检查元素谁否可以被点击
        wait.until(ExpectedConditions.elementToBeClickable(
                By.xpath("//*[@id=\"m6010318884_canvas\"]/div/div[1]/div[1]/div/h2/a[1]/span")));

        //隐式等待不建议和显示等待一起用
       quitExplorer(driver);

    }

    public void Test02() throws InterruptedException {

        //驱动管理程序下载驱动
        WebDriverManager.chromedriver().setup();
        ChromeOptions options = new ChromeOptions();
        //允许访问所有链接
        options.addArguments("--remote-allow-origins=*");
        //1.驱动打开浏览器(添加的配置要给创建的驱动对象）
        WebDriver driver = new ChromeDriver(options);
        //2.请求网址
        //driver.get("file:///E:/java%E7%AC%94%E8%AE%B0/%E6%B5%8B%E8%AF%95%E5%BC%B9%E7%AA%97/selenium-html/selenium-html/alert.html#");
       // driver.get("E:/java笔记/测试弹窗/selenium-html/selenium-html/confirm.html");
        driver.get("file:///E:/java%E7%AC%94%E8%AE%B0/%E6%B5%8B%E8%AF%95%E5%BC%B9%E7%AA%97/selenium-html/selenium-html/Prompt.html");
        //警告弹窗
        //driver.findElement(By.xpath("//*[@id=\"tooltip\"]")).click();
        //Thread.sleep(1000);

        //确认弹窗
        //driver.findElement(By.xpath("/html/body/input")).click();

        //提示弹窗
        driver.findElement(By.xpath("/html/body/input")).click();
        //切换到弹窗
        Alert alert=driver.switchTo().alert();
        //代码执行太快导致页面还没加载出来弹窗，出现nosuchalert报错
        //可以使用强制等待或者显式等待，因为隐式等待是处理页面上的元素，无法处理弹窗
        Thread.sleep(1000);
        //发送文本
        alert.sendKeys("雨木");

        //确认（弹窗上只有一个确认按钮的时候，确认，取消都可以用）
        alert.accept();
        Thread.sleep(1000);
        //取消
        //alert.dismiss();

        quitExplorer(driver);

    }
    public void Test03() throws InterruptedException {
        //驱动管理程序下载驱动
        WebDriverManager.chromedriver().setup();
        ChromeOptions options = new ChromeOptions();
        //允许访问所有链接
        options.addArguments("--remote-allow-origins=*");
        //1.驱动打开浏览器(添加的配置要给创建的驱动对象）
        WebDriver driver = new ChromeDriver(options);
        //2.请求网址
        driver.get("file:///E:/java%E7%AC%94%E8%AE%B0/%E6%B5%8B%E8%AF%95%E5%BC%B9%E7%AA%97/selenium-html/selenium-html/upload.html");
        Thread.sleep(1000);
        //sendkeys上传指定路径的文件
        driver.findElement(By.xpath("/html/body/div/div/input")).sendKeys("C:\\Users\\雨木\\Desktop\\找工作需要文件\\韩雨彤简历.pdf");
        Thread.sleep(1000);
        quitExplorer(driver);
    }
}
